"""
    拦截特定端口，修改请求头，然后转发到特定代理端口

    cmd控制台的启动命令：
        mitmdump --listen-port 10801 --mode upstream:http://127.0.0.1:10809 -s example.py -q
    参数说明：
        --listen-host 监听哪个主机
        --listen-port 10801 监听哪个端口
        --mode upstream 将数据转发给哪个代理主机和端口
        -s 入口py文件
        -q 屏蔽mitmdump默认的控制台日志，只显示自己脚本中的

    浏览器的selenium脚本示例：
        import time
        from selenium import webdriver

        options = webdriver.EdgeOptions()
        options.add_argument(f'--proxy-server=127.0.0.1:10801')
        driver = webdriver.Edge(options=options)

        driver.get('https://www.baidu.com/')
        time.sleep(3600)

"""

import mitmproxy.http


class AddHeaders:
    def request(self, flow: mitmproxy.http.HTTPFlow):
        # print(f"【程序日志】未添加自定义请求头时的headers：\n{flow.request.headers}")

        # 添加请求头
        flow.request.headers["X-Forwarded-For"] = "1.1.1.1"

        # print(f"【程序日志】已添加自定义请求头后的headers：\n{flow.request.headers}")


# 变量名必须为addons，列表元素必须是相关实例（即对象）
addons = [
    AddHeaders()
]
